package com.millstein.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.millstein.model.OrderMessage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.millstein.model.ProductOrderDO;
import com.millstein.request.AddOrderRequest;
import com.millstein.request.RepayOrderRequest;
import com.millstein.vo.ProductOrderVO;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author millstein
 * @since 2021-09-17
 */
public interface ProductOrderService extends IService<ProductOrderDO> {

    /**
     * 确认订单
     * @param addOrderRequest 订单信息
     */
    void confirmOrder(AddOrderRequest addOrderRequest);

    /**
     * 根据订单编号查询订单信息
     * @param outTradeNo 订单编号
     * @return
     */
    String getProductOrderStateByOutTradeNo(String outTradeNo);

    /**
     * 关单
     * @param orderMessage 关单消息
     * @return
     */
    boolean doCloseOrder(OrderMessage orderMessage);

    /**
     * 支付宝回调接口
     * @return
     */
    String doCallback();

    /**
     * 分页条件查询订单信息
     * @param page 当前页
     * @param size 每页记录数
     * @param state 订单状态
     * @return
     */
    Page<ProductOrderVO> pageOrder(int page, int size, String state);

    /**
     * 重新支付订单
     * @param repayOrderRequest 订单信息
     */
    void repay(RepayOrderRequest repayOrderRequest);

    /**
     * 获取确认订单时的token（防止重复提交）
     * @return
     */
    String getSubmitToken();
}
